/**
 * mescroll-more-item的mixins, 仅在多个 mescroll-body 写在子组件时使用 (参考 mescroll-more 案例)
 */
const MescrollMoreItemMixin = {
  // 支付宝小程序不支持props的mixin,需写在具体的页面中
  // #ifndef MP-ALIPAY || MP-DINGTALK
  props: {
    i: Number, // 每个tab页的专属下标
    index: {
      // 当前tab的下标
      type: Number,
      default() {
        return 0
      },
    },
  },
  // #endif
  data() {
    return {
      downOption: {
        auto: false, // 不自动加载
      },
      upOption: {
        auto: false, // 不自动加载
      },
      isInit: false, // 当前tab是否已初始化
    }
  },
  watch: {
    // 监听下标的变化
    index(val) {
      if (this.i === val && !this.isInit) {
        this.isInit = true // 标记为true
        this.mescroll && this.mescroll.triggerDownScroll()
      }
    },
  },
  methods: {
    // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)
    mescrollInitByRef() {
      if (!this.mescroll || !this.mescroll.resetUpScroll) {
        // 字节跳动小程序编辑器不支持一个页面存在相同的ref, 多mescroll的ref需动态生成, 格式为'mescrollRef下标'
        let mescrollRef =
          this.$refs.mescrollRef || this.$refs["mescrollRef" + this.i]
        if (mescrollRef) this.mescroll = mescrollRef.mescroll
      }
    },
    // mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit)
    mescrollInit(mescroll) {
      this.mescroll = mescroll
      this.mescrollInitByRef && this.mescrollInitByRef() // 兼容字节跳动小程序
      // 自动加载当前tab的数据
      if (this.i === this.index) {
        this.isInit = true // 标记为true
        this.mescroll.triggerDownScroll()
      }
    },
  },
}

export default MescrollMoreItemMixin
